home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shoot!
/
Shoot! (199x)(CD-ROM Update International)(NL)[compilation].iso
/
jedidemo
/
episode
/
jk1mpdem.gob
/
cog_m4_reactorthrust.cog
next >
Wrap
Text File
|
1999-12-31
|
4KB
|
137 lines
# Jedi Knight Cog Script
#
# M4_reactorthrust.cog
#
# Multiplayer sectorthrust trap.
#
# This script will control 2 sector thrust sectors thrusting in the same direction
# and with the same velocity. The thrusts activate with a switch.
#
# [IS/JS]
#
# (C) 1997 LucasArts Entertainment Co. All Rights Reserved
# ========================================================================================
symbols
message startup
message activate
message arrived
message entered
message timer
int currentThing local
int i local
vector playerVec local
vector vec0 desc=thrust_direction
float thrustspeed=1.0 desc=thrust_speed
float doorspeed=2.0 desc=speed of the doors
float sleeptime=2.0 desc=seconds that the doors pause
thing door0 linkid=2
thing door1 nolink
thing door2 nolink
thing door3 nolink
surface Switch linkid=1
sector sector0
sector sector1
thing light0 nolink
float lspeed=4.0 desc=light_speed
sound wav0
sound wav1
thing thing0
float fadetime=4.0
end
# ========================================================================================
code
startup:
SetTimer(0.1);
channel=PlaySoundThing(wav0, thing0, 0.01, -1, -1, 1);
return;
# ........................................................................................
activate:
if (GetSenderID() != 1) return;
if (GetWallCel(switch) == 1) return;
SetWallCel(Switch, 1);
PlaySoundPos(wav1, SurfaceCenter(switch), 1, -1, -1, 0);
ChangeSoundVol(channel, 1.5, fadetime/2);
ChangeSoundPitch(channel, 1, fadetime/2);
MoveToFrame(door0, 1, doorspeed);
MoveToFrame(door1, 1, doorspeed);
MoveToFrame(door2, 1, doorspeed);
MoveToFrame(door3, 1, doorspeed);
SectorThrust(sector0, vec0, thrustspeed);
SectorThrust(sector1, vec0, thrustspeed);
MoveToFrame(light0, 1, lspeed);
// unattach all players in sectors
currentThing = FirstThingInSector(sector0);
while (currentThing != -1) {
call reactorpull;
currentThing = NextThingInSector(currentThing);
}
currentThing = FirstThingInSector(sector1);
while (currentThing != -1) {
call reactorpull;
currentThing = NextThingInSector(currentThing);
}
return;
# ........................................................................................
arrived:
if (GetCurFrame(GetSenderRef()) == 0) {
SetWallCel(switch, 0);
PlaySoundPos(wav1, SurfaceCenter(switch), 1, -1, -1, 0);
SectorThrust(sector0, vec0, 0.0);
SectorThrust(sector1, vec0, 0.0);
} else {
MoveToFrame(door0, 0, doorspeed);
MoveToFrame(door1, 0, doorspeed);
MoveToFrame(door2, 0, doorspeed);
MoveToFrame(door3, 0, doorspeed);
MoveToFrame(light0, 0, lspeed);
ChangeSoundVol(channel, 0.1, fadetime);
ChangeSoundPitch(channel, 0.1, fadetime);
}
return;
# ........................................................................................
timer:
ChangeSoundPitch(channel, 0.1, 0.1);
return;
# ........................................................................................
entered:
if (GetSenderId() !=0) return;
if (GetWallCel(switch) !=1) return;
currentThing = GetSourceRef();
// fall through
# ........................................................................................
reactorpull:
if (GetThingType(currentThing) == 10) {
DetachThing(currentThing);
playerVec = GetThingVel(currentThing);
playerVec = VectorAdd(vec0, playerVec);
SetThingVel(currentThing, playerVec);
}
return;
end